iT邦幫忙

0

如何把類別資訊丟給模型訓練 - 編碼方法(上):Integer Encoding (Label Encoding) & One-Hot Encoding

  • 分享至 

  • xImage
  •  

前言

神經網路中一個常見的題目就是要做「分類」,而如何將類別資訊(Categorical Data)轉換成數值資訊(Numerical Data)讓模型能夠理解,進而執行訓練,就要來探討如何對資料進行編碼(Encoding)。

網路上已經有其他寫得滿清楚的部落格文章,可以直接參考(皆附程式碼):

這邊僅簡單做個白話的整理和比較,也可以直接看最後Take Home Message的部分。

編碼 (Encoding)

常用的方式主要有以下兩種方法:

  1. Integer Encoding(標籤編碼)
  2. One-Hot Encoding(獨熱編碼)

1. Integer Encoding

將類別變量利用一位來呈現。不同類別,分別有對應的一個整數。

2. One-Hot Encoding

將類別變量用二進制的向量來呈現。有n類,向量長度就是n維。屬於該類的話就註記1、不屬於就註記0。

Take Home Message

針對三個類別來舉例的話:

Integer Encoding會這樣轉換:
金牌 > 1
銀牌 > 2
銅牌 > 3
(可以留意一下,金銀銅牌這三類是「有序類別變量」,類別之間具有順序關係)

One-Hot Encoding會這樣轉換:
紅色 > 1 0 0
綠色 > 0 1 0
藍色 > 0 0 1

兩種方式使用時機的差異在於:

  • Integer Encoding會讓模型學習到「順序關係」,也就是有大小之分。
  • 而當類別之間不存在優劣、前後、高低之分的時候,也就是「無序」,就適合採用 One-Hot Encoding。但相對地,因為維度提高了,就會較費時且占用較多的空間。

如果有任何問題歡迎留言討論,文中錯誤的地方還請不吝指正,謝謝!

References

Why One-Hot Encode Data in Machine Learning?


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言